#!/bin/bash

# 打印欢迎语
echo "欢迎使用 FRPC 一键部署脚本！"
echo "本脚本将帮助您快速部署 FRPC 服务。"
echo "请根据提示输入相关信息，按回车跳过将自动生成随机值。"
echo ""

# 获取公网 IP 地址
PUBLIC_SERVER_IP=$(curl -s https://ipinfo.io/ip)

# 获取服务器 IP 地址
SERVER_IP=$(hostname -I | awk '{print $1}')

# 询问用户输入 FRP 服务端 IP 和端口
echo "请输入 FRP 服务端 IP（公网 IP，例如：123.45.67.89）："
read frp_server_ip
if [ -z "$frp_server_ip" ]; then
    echo "FRP 服务端 IP 不能为空，请重新运行脚本并输入正确的 IP。"
    exit 1
fi

echo "请输入 FRP 服务端端口（默认 7000）："
read frp_server_port
if [ -z "$frp_server_port" ]; then
    frp_server_port=7000
fi

echo "请输入 FRP 服务端 token："
read frp_server_token
if [ -z "$frp_server_token" ]; then
    frp_server_token=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | cut -c1-16)
fi

echo "请输入客户端面板端口（默认 7400）："
read port
if [ -z "$port" ]; then
    port=7400
fi

echo "请输入客户端登录名（按回车跳过）："
read username
if [ -z "$username" ]; then
    username=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
fi

echo "请输入客户端登录密码（按回车跳过）："
read password
if [ -z "$password" ]; then
    password=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
fi

# 创建目录结构
rm -r /docker/frpc
mkdir -p /docker/frpc/logs
chmod -R 777 /docker/frpc

# 进入目标目录
cd /docker/frpc

# 写入 frpc.ini 文件
cat <<EOF > frpc.ini
[common]
server_addr = $frp_server_ip
server_port = $frp_server_port
token = $frp_server_token

# frp服务端配置
serverAddr = "$frp_server_ip" # 指定 FRP 服务端（frps）的公网 IP 地址，客户端（frpc）将通过此地址连接到服务端。
serverPort = $frp_server_port             # 指定 FRP 服务端监听的端口号，客户端将通过此端口与服务端建立连接。

# 认证配置
auth.method = "token"         # 设置认证方式为 token，用于客户端和服务端之间的身份验证。
auth.token = "$frp_server_token"    # 定义用于认证的 token 值，客户端和服务端的 token 必须一致才能成功连接。

# 内网 Web 管理界面配置
webServer.addr = "0.0.0.0"    # 指定 Web 管理界面的监听地址，`0.0.0.0` 表示监听所有网络接口。
webServer.port = $port         # 指定 Web 管理界面的监听端口。
webServer.user = "$username"      # Web 管理界面的用户名。
webServer.password = "$password"  # Web 管理界面的密码。
webServer.pprofEnable = false # 是否启用 pprof 性能分析功能（默认为 false）。

EOF

# 写入 docker-compose.yml 文件
cat <<EOF > docker-compose.yml
services:
  frpc:
      image: snowdreamtech/frpc:latest
      container_name: frpc
      restart: unless-stopped
      ports:
        - "$port:7400"  # FRPC Web 管理界面端口映射
      environment:
        - TZ=Asia/Shanghai
      volumes:
        - /docker/frpc/frpc.ini:/etc/frp/frpc.ini
EOF

# 启动 Docker Compose
docker compose up -d

echo "FRPC 启动成功！"
echo "后台地址：http://$SERVER_IP:$port"
echo "后台地址：http://$PUBLIC_SERVER_IP:$port"
echo "后台登录用户名：$username"
echo "后台登录密码：$password"
echo "注意：请不要将登录密码告知他人，以防他人登录您的服务器。"